package file;

import java.io.File;
import java.io.FileFilter;

/**
 * 使用文件过滤器获取一个目录中符合过滤器条件的所有子项
 */
public class ListFilesDemo2 {
    public static void main(String[] args) {
        //获取当前目录下的所有子项
        File dir = new File(".");
        if(dir.isDirectory()){
            /*
                获取名字是以"."开始的所有子项
             */
            FileFilter filter = new FileFilter() {
                /**
                 *  创建文件过滤器时需要实现方法:accept.  注:单词含义"接受"
                 *  该方法是用来定义文件过滤器的过滤规则。返回值用来表示是否接受参数file
                 *  当参数file符合过滤器要求时，方法应当返回true。否则返回false。
                 */
                public boolean accept(File file) {
                    //如果该file表示的文件或目录名字是以"."开始的则接受
                    String name = file.getName();
                    return name.startsWith(".");
                }
            };
            /*
                将目录中所有的子项逐一通过调用过滤器的accept方法进行过滤，并保留返回值
                为true的子项最终存入数组返回。
             */
            File[] subs = dir.listFiles(filter);
            System.out.println("当前目录下有"+subs.length+"个子项");
            for(int i=0;i<subs.length;i++){
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}





